<?php
/**
 * Created by PhpStorm.
 * User: guokunsheng
 * Date: 2018/9/28
 * Time: 15:36
 */

namespace app\web\controller;

use app\common\lib\exception\ApiException;
use app\common\lib\Util;
use \think\Controller;

use app\common\lib\Aes;
use app\common\lib\IAuth;
use app\common\lib\astrolog\Acg as AcgLib;
use app\common\model\Recode;
use app\common\model\Map as MapRecode;
use app\common\model\FateCity;
use app\common\model\Goods;

class Acg extends Controller
{

    // 地理位置的分享h5
    /**
     * @return mixed
     * @throws \app\common\lib\exception\ApiException
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function address()
    {
        //***********校验参数部分**********
        // rid=8&lon=116.397732&lat=39.908676&address=北京传媒大学312&name=用户名字123
//        $error_msg='';
//        $token = input('token');
        //注意token中不能存在空格，因为php的urldecode方法会把“+”替换成空格
        $token = input('token', '');
        $isEncode = input('is_encode/d', 0);
        if (!$isEncode)
        {
            //注意token中不能存在空格，因为php的urldecode方法会把“+”替换成空格
            $token = urldecode($token);
            //把空格替换成“+”
            $token = str_replace(' ', '+', $token);
        } elseif ($isEncode === 2)
        {
            $token = base64_decode($token, true);
        }
        if (!isset($token) || $token === '')
        {
            $error_msg = '参数为空！';
        } else
        {
            // access-token AES解密
            $result = (new Aes())->decryptWithOpenssl($token);
            if (!empty($result))
            {
                //参数转换为数组
                $array = [];
                $paramArrs = explode('&', $result);
                foreach ($paramArrs as $paramArr)
                {
                    $array[strstr($paramArr, '=', true)] = substr(strstr($paramArr, '='), 1);
                }
                //参数赋值
                $uid = $array['uid'];
                $rid = $array['rid'];
                $point_longitude = $array['lon'];
                $point_latitude = $array['lat'];
                $address = isset($array['address']) ? $array['address'] : '';
                $u_name = $array['name'];

                if (!isset($uid))
                {
                    $error_msg = 'uid为空！';
                }
                if (!isset($rid))
                {
                    $error_msg = 'rid为空！';
                }
                if (!isset($point_longitude))
                {
                    $error_msg = '经度为空！';
                }
                if (!isset($point_latitude))
                {
                    $error_msg = '纬度为空！';
                }
//                if (!isset($address))
//                {
//                    $error_msg = '地址为空！';
//                }
                if (!isset($u_name))
                {
                    $error_msg = '用户名为空！';
                }
            } else
            {
                $error_msg = '解密错误！';
            }
        }

        if (isset($error_msg))
        {
            return $this->fetch('address', [
                'error_msg' => $error_msg
            ]);
        }

        $error_msg = '';
        //***********校验参数部分**********


        //from Map->index()*********************************************************************************************************************************************************************
        $recode = (new Recode())->getRecode(['uid' => $uid, 'id' => $rid]);
        if (empty($recode))
        {
            throw new ApiException('档案不存在');
        }
        // 获取用户当前已解锁的命格线 string 12位
        $unlockInfo = (new MapRecode())->getRecodeUnlockLines($recode, true);
        $lines = $unlockInfo['lines'];
        $planets = $unlockInfo['planets'];// 计算客户端绘制命格线所需的数据
        $i = 0;
        foreach ($planets['planet1'] as $k => $d)
        {
            if ($i >= 11) continue;// 仅过滤需要绘制的11颗星的数据中，未解锁购买的
            if ($lines['data'][$i] == 0)
            {
                unset($planets['planet1'][$k]);
                unset($planets['planet2'][$k]);
            }
            $i++;
        }
        $acg_goods = (new Goods())->getGoodsForACG();

        // 从配置文件中加载相关配置
        $icons = config('map.lines_icon');
        $descriptions = config('map.lines_title');
        $colors = config('map.lines_color');
        $pids = config('map.pid');
        $map_planets = config('map.planet');
        $point_titles = config('map.point_title');
        $point_deses = config('map.point_des');

        $line_list = [];// 所有命格线商品

        foreach ($acg_goods as $ag)
        {

            if ($ag['id'] > 18) continue;// 只需要11条线的数据

            $discount = floatval($ag['discount']);// 折扣

            $price = $discount ? $ag['or_prize'] * $discount : $ag['now_prize'];// 计算实际价格

            $is_unlock = $lines['data'][$ag['id'] - 7] == 1;

            $line_list[] = [
                'gid' => $ag['id'],
                'name' => $ag['name'],
                'price' => $price,
                'icon' => $icons[$ag['id']],
                'description' => $descriptions[$ag['id']],
                'color' => $colors[$ag['id']],
                'is_unlock' => $is_unlock,
                'pid' => $pids[$ag['id']],
                'planet' => $map_planets[$ag['id']],
                'point_title' => $point_titles[$ag['id']],
                'point_des' => $point_deses[$ag['id']]
            ];
        }
        $line_list = resort($line_list, 'is_unlock');// 布尔值进行排序，暂未发现问题????
//from Map->index()*********************************************************************************************************************************************************************

        //***************计算绘制线和点的数据************************

        $planet1 = $planets['planet1'];
        $planet2 = $planets['planet2'];
        $lon = ($recode['long_deg'] + $recode['long_min'] / 60) * $recode['ew'];

        $MC = 20;
        // 赤经赤纬是地理坐标在天球上的投影

        // 赤经  从春分点沿着天赤道向东到天体时圈与天赤道的交点所夹的角度 单位是时、分、秒  1h=15゜，1m=15'，1s=15"
        // $planet1={$planet1};
        // 赤纬
        // $planet2={$planet2};

        //线上的文字列表
        $textOptions = [];

        $longm = $this->Mod($planet1[$MC] - $lon); // 天顶的赤经 - 用户经度
        $lat_max = 90; // 最大纬度值
        $lat_min = -90; // 最小纬度值
        $degToRadian = 180 / M_PI; // 角度转弧度

        // 需要绘制的线有 日0月1水2金3火4木5土6天7海8冥9 北交点12   总共11个行星
        foreach ($planet1 as $i => $p)
        {
            if ($i >= 17) break;
            //获取画笔颜色
            foreach ($line_list as $k => $v)
            {
                if ($v['pid'] === $i)
                {
                    $color = $v['color'];
                    $name = $v['name'];
                }
            }

            //******* 行星-天顶 垂直线 *******
            $x1 = $this->Mod($planet1[$i] + $lon - $planet1[$MC]); // 行星赤经 + 用户经度 - 天顶赤经值
            $optionsMC[$i]['path'] = [
                [$x1, $lat_min],
                [$x1, $lat_max]
            ]; // 垂直线的起点x1,y1和终点x2,y2
            $optionsMC[$i]['strokeColor'] = $color; // 线颜色

            //线上画 标示Ⅰ
            $tmpTextOptionsMC['path'] = [$x1, 30];
            $tmpTextOptionsMC['text'] = $name . 'Ⅱ';
            $tmpTextOptionsMC['color'] = $color;
            array_push($textOptions, $tmpTextOptionsMC);
            //******* 行星-天顶 垂直线 *******

            //*******画能量最强的点*******
            $optionsPoint[$i]['strokeWeight'] = 3;
            $optionsPoint[$i]['path'] = [$x1, $planet2[$i]];
            //*******画能量最强的点*******

            //******* 行星-天底 垂直线 *******
            $optionsIC['strokeWeight'] = 2;
            // 行星-天底 垂直线
            $x2 = $this->Mod($x1 + 180); // 行星赤经 + 用户经度 + 180 - 天顶赤经值
            $optionsIC[$i]['path'] = [
                [$x2, $lat_min],
                [$x2, $lat_max]
            ]; // 垂直线的起点x1,y1和终点x2,y2
            $optionsIC[$i]['strokeColor'] = $color; // 线颜色

            //线上画 标示ⅠⅠ
            $tmpTextOptionsIC['path'] = [$x2, 30];
            $tmpTextOptionsIC['text'] = $name . 'Ⅳ';
            $tmpTextOptionsIC['color'] = $color;
            array_push($textOptions, $tmpTextOptionsIC);
            //******* 行星-天底 垂直线 *******

            $xold1 = -1000;
            $xold2 = -1000; // 初始化
            $pathASC = [];
            $pathASC2 = [];
            $pathDES = [];
            $pathDES2 = [];
            for ($lat = $lat_min; $lat <= $lat_max; $lat += 0.015)
            {
                // console.log("循环开始 lat:"+lat);
                // 行星i的弧度（赤纬值转为弧度）正切值 * 当前循环弧度（纬度转为弧度）正切值
                // 资料来源： https://baike.baidu.com/item/Tan/14821216?fr=aladdin
                // 以下为基于直角三角形
                // 正切：把∠A的对边与邻边的比叫做∠A的正切（tangent），记作tanA
                // tanA=sinA/cosA
                $ad = asin(tan($planet2[$i] / $degToRadian) * tan($lat / $degToRadian));
                $z = $this->Mod($planet1[$i] - $ad * $degToRadian - 90 - $longm);
                if (!is_nan($z))
                {
                    if (($xold1 !== -1000 && $xold1 * $z < 0) || count($pathASC2) > 0)
                    {
                        array_push($pathASC2, [$z, $lat]);
                    } else
                    {
                        array_push($pathASC, [$z, $lat]);
                    }
                    $xold1 = $z;
                }
                $z = $this->Mod($planet1[$i] + $ad * $degToRadian + 90 - $longm);
                if (!is_nan($z))
                {
                    if (($xold2 !== -1000 && $xold2 * $z < 0) || count($pathDES2) > 0)
                    {
                        array_push($pathDES2, [$z, $lat]);
                    } else
                    {
                        array_push($pathDES, [$z, $lat]);
                    }
                    $xold2 = $z;
                }
            }
            //******开始绘制上升线******
            $optionsASC[$i]['path'] = $pathASC;
            $optionsASC[$i]['strokeColor'] = $color;
            $optionsASC2[$i]['path'] = $pathASC2;
            //线上画 标示ⅠⅠⅠ
            $ascText = asin(tan($planet2[$i] / $degToRadian) * tan(30 / $degToRadian));
            $textLon = $this->Mod($planet1[$i] - $ascText * $degToRadian - 90 - $longm);
            $tmpTextOptionsASC['path'] = [$textLon, 30];
            $tmpTextOptionsASC['text'] = $name . 'Ⅰ';
            $tmpTextOptionsASC['color'] = $color;
            array_push($textOptions, $tmpTextOptionsASC);
            //******开始绘制上升线******


            //******开始绘制下降线******
            $optionsDES[$i]['path'] = $pathDES;
            $optionsDES[$i]['strokeColor'] = $color;
            $optionsDES2[$i]['path'] = $pathDES2;
            //线上画 标示ⅠV
            $textLon = $this->Mod($planet1[$i] + $ascText * $degToRadian + 90 - $longm);
            $tmpTextOptionsDES['path'] = [$textLon, 30];
            $tmpTextOptionsDES['text'] = $name . 'Ⅲ';
            $tmpTextOptionsDES['color'] = $color;
            array_push($textOptions, $tmpTextOptionsDES);
            //******开始绘制下降线******
        }
        //***************计算绘制线和点的数据************************

        //********从配置文件中，获取所有命格线数据**********
        $lines_color = config('map.lines_color');
        $lines_name = config('map.lines_name');
        $lines_des = config('map.lines_des');
        foreach ($lines_name as $k => $v)
        {
            if ($k != 18)
            {
                $lines_data[$k]['color'] = $lines_color[$k];
                $lines_data[$k]['name'] = $lines_name[$k];
                $lines_data[$k]['des'] = $lines_des[$k];
            }
        }
        //********从配置文件中，获取所有命格线数据**********

        //********从配置文件中，获取所有 能量点 的数据**********
        $point_data = [];
        foreach ($point_titles as $k => $v)
        {
            if ($k != 18)
            {
                $item['pid'] = $k;
                $item['icon'] = $icons[$k];
                $item['title'] = $point_titles[$k];
                $item['des'] = $point_deses[$k];
                array_push($point_data, $item);
            }
        }
        //********从配置文件中，获取所有 能量点 的数据**********


        //************计算命格线的某个地点的 财富、桃花、事业、、等数据************
        $timestamp = strtotime($recode['year'] . '-' . $recode['month'] . '-' . $recode['day'] . ' ' . $recode['hour'] . ':' . $recode['minute']);
        $timestamp -= ($recode['timezone'] + $recode['is_summer']) * 3600;
        $longitude = ($recode['long_deg'] + $recode['long_min'] / 60) * $recode['ew'];
        $latitude = ($recode['lat_deg'] + $recode['lat_min'] / 60) * $recode['ns'];
        $info = [
            'type' => 1,// 1=>普通地点，2=>命运之地
            'rid' => $rid,// 档案id
            'current_longitude' => '',// 当前所在位置经度
            'current_latitude' => '',// 当前所在位置纬度
            'point_longitude' => $point_longitude,// 选择的点的经度
            'point_latitude' => $point_latitude,// 选择的点的纬度
            'longitude' => $longitude,// 用户出生地经度
            'latitude' => $latitude,// 用户出生地纬度
            'time' => $timestamp,// 用户出生时间
            'sex' => $recode['type'],// 档案性别
            'isself' => $recode['isself'],// 当前档案是否为自己，检查是否有赠送记录，计算命格线对地点的影响
            'uid' => $uid,// 用户id
        ];
        $Acg = new AcgLib();
        $array = $Acg->getRecommendedInfo($info);

        $data['score_list'] = $array['score_list'];
        //************计算命格线的某个地点的 财富、桃花、事业、、等数据************


        return $this->fetch('address', [
            'error_msg' => $error_msg,
            'points' => json_encode($point_data),
            'city_loc' => json_encode(config('map.map')['city_loc']),
            'lines1' => json_encode($lines_data),
            'lines' => $lines_data,
            'address' => json_encode($address),
            'lon' => $point_longitude,
            'lat' => $point_latitude,
            'data' => json_encode($data),
            'data1' => $data,
            'name' => $u_name,
            'zoom' => 0,
            'optionsMC' => json_encode($optionsMC),
            'optionsPoint' => json_encode($optionsPoint),
            'optionsIC' => json_encode($optionsIC),
            'optionsASC' => json_encode($optionsASC),
            'optionsASC2' => json_encode($optionsASC2),
            'optionsDES' => json_encode($optionsDES),
            'optionsDES2' => json_encode($optionsDES2),
            'textOptions' => json_encode($textOptions)
        ]);
    }


    // 命运之城的分享h5
    public function fate_city()
    {
        //***********校验参数部分**********
        // rid=8&lon=116.397732&lat=39.908676&name=用户名字123
//        $token = input('token');
        //注意token中不能存在空格，因为php的urldecode方法会把“+”替换成空格
        $token = input('token', '');
        $isEncode = input('is_encode/d', 0);

        if (!isset($token) || $token === '')
        {
            $error_msg = '参数为空！';
        } else
        {
            if (!$isEncode)
            {
                //注意token中不能存在空格，因为php的urldecode方法会把“+”替换成空格
                $token = urldecode($token);
                //把空格替换成“+”
                $token = str_replace(' ', '+', $token);
            } elseif ($isEncode === 2)
            {
                $token = base64_decode($token, true);
            }
            // access-token AES解密
            $result = (new Aes())->decryptWithOpenssl($token);
            if (!empty($result))
            {
                //参数转换为数组
                $array = [];
                $paramArrs = explode('&', $result);
                foreach ($paramArrs as $paramArr)
                {
                    $array[strstr($paramArr, '=', true)] = substr(strstr($paramArr, '='), 1);
                }
                //参数赋值
                $uid = $array['uid'];
                $rid = $array['rid'];
                $u_lon = $array['lon'];
                $u_lat = $array['lat'];
                $name = $array['name'];
                if (!isset($uid))
                {
                    $error_msg = 'uid为空！';
                }
                if (!isset($rid))
                {
                    $error_msg = 'rid为空！';
                }
                if (!isset($u_lon))
                {
                    $error_msg = '经度为空！';
                }
                if (!isset($u_lat))
                {
                    $error_msg = '纬度为空！';
                }
                if (!isset($name))
                {
                    $error_msg = '用户名为空！';
                }
            } else
            {
                $error_msg = '解密错误！';
            }
        }

        if (isset($error_msg))
        {
            return $this->fetch('address', [
                'error_msg' => $error_msg
            ]);
        } else
        {
            $error_msg = '';
        }
        //***********校验参数部分**********


        //***********查询 某个用户和档案下 对应的 命运之城列表***************
        $recode = (new Recode())->getRecode(['id' => $rid]);
        // 获取用户当前已解锁的命格线 string 12位
        $unlockInfo = (new MapRecode())->getRecodeUnlockLines($recode);
        $lines = $unlockInfo['lines'];
        if ($lines['data'][10] == 1 || $lines['data'][11] == 1)
        {
            $info = [
                'uid' => $uid,
                'rid' => $rid,// 档案id
                'sex' => $recode['type'],// 档案性别
                'isself' => $recode['isself'],
                'longitude' => ($recode['long_deg'] + $recode['long_min'] / 60) * $recode['ew'],// 用户出生地经度
                'latitude' => ($recode['lat_deg'] + $recode['lat_min'] / 60) * $recode['ns'],// 用户出生地纬度
                'time' => strtotime($recode['year'] . '-' . $recode['month'] . '-' . $recode['day'] . ' ' . $recode['hour'] . ':' . $recode['minute'])
                    - ($recode['timezone'] + $recode['is_summer']) * 3600,// 用户出生时间,
                'app_version' => '1.9.0'//用于区分幸运之城是否直接进行计算,1.9.0以后的版本才可直接加入队列计算
            ];
            $fate_city = (new FateCity())->getUserFateCitys($info);
            $data['fate_city'] = $fate_city;
        } else
        {
            $error_msg = '该用户没有开通命运之城！';
        }

        //***********查询 某个用户和档案下 对应的 命运之城列表***************

        //********计算所有命运之城的 财富、桃花、事业、、等数据********
        foreach ($fate_city as $k => $v)
        {
            $timestamp = strtotime($recode['year'] . '-' . $recode['month'] . '-' . $recode['day'] . ' ' . $recode['hour'] . ':' . $recode['minute']);
            $timestamp -= ($recode['timezone'] + $recode['is_summer']) * 3600;
            $longitude = ($recode['long_deg'] + $recode['long_min'] / 60) * $recode['ew'];
            $latitude = ($recode['lat_deg'] + $recode['lat_min'] / 60) * $recode['ns'];
            $info = [
                'type' => 1,// 1=>普通地点，2=>命运之地
                'rid' => $rid,// 档案id
                'current_longitude' => '',// 当前所在位置经度
                'current_latitude' => '',// 当前所在位置纬度
                'point_longitude' => $v['longitude'],// 选择的点的经度
                'point_latitude' => $v['latitude'],// 选择的点的纬度
                'longitude' => $longitude,// 用户出生地经度
                'latitude' => $latitude,// 用户出生地纬度
                'time' => $timestamp,// 用户出生时间
                'sex' => $recode['type'],// 档案性别
                'isself' => $recode['isself'],// 当前档案是否为自己，检查是否有赠送记录，计算命格线对地点的影响
                'uid' => $uid,// 用户id
            ];
            $array = (new AcgLib())->getRecommendedInfo($info);

            $data['score_list'][] = $array['score_list'];

            //通过传过来的经纬度，来计算当前选中的是第几个 fcid
//            if ($u_lat == $v['latitude'] && $u_lon == $v['longitude'])
//            {
//                $fcid = $k;
//            }
            if (bccomp($u_lat, $v['latitude']) == 0 && bccomp($u_lon, $v['longitude']) == 0)
            {
                $fcid = $k;
            }
        }
        //********计算所有命运之城的 财富、桃花、事业、、等数据********

        //********赋值 顶部 注释 里面的内容********
        $fate_city_name = config('map.fate_city_name');
        $fate_city_icon = config('map.fate_city');
        $fate_city_des = config('map.fate_city_des');
        foreach ($fate_city_name as $k => $v)
        {
            if ($fate_city_des[$k] !== '')
            {
                $data['fate_city_default'][$k]['icon'] = $fate_city_icon[$k];
                $data['fate_city_default'][$k]['name'] = $fate_city_name[$k];
                $data['fate_city_default'][$k]['des'] = $fate_city_des[$k];
            }
        }
        //********赋值 顶部 注释 里面的内容********

        return $this->fetch('fate_city', [
            'zoom' => 3,
            'data' => json_encode($data),
            'data1' => $data,
            'fcid' => $fcid,
            'name' => $name,
            'error_msg' => $error_msg
        ]);
    }


    /**
     * 命格线和命运之城 介绍h5（内置到客户端）
     * @return mixed
     * @throws ApiException
     */
    public function info()
    {

        $gid = input('gid', 0);
        if (!$gid)
        {
            throw new ApiException('请求异常');
        }

        $data['name'] = config('map.lines_name')[$gid];
        $data['icon'] = config('map.lines_icon')[$gid];
        $data['des'] = config('map.lines_des')[$gid];
        if (18 == $gid)
        {//命运之城
            $fate_city_name = config('map.fate_city_name');
            $fate_city_icon = config('map.fate_city');
            $fate_city_des = config('map.fate_city_des');
            foreach ($fate_city_name as $k => $v)
            {
                if ($fate_city_des[$k] !== '')
                {//如果描述不为空，那么就赋值命运之城
                    $data['sub_fate_cities'][$k]['icon'] = $fate_city_icon[$k];
                    $data['sub_fate_cities'][$k]['name'] = $fate_city_name[$k];
                    $data['sub_fate_cities'][$k]['des'] = $fate_city_des[$k];
                }
            }
        } else
        {//命格线
            $data['sub_lines'] = config('map.lines_detail')[$gid];//返回给页面的数据
            //要替换的数据
//            $lines_theory = config('map.lines_theory');
            $line_name = config('map.lines_name')[$gid];
            $planet_name = config('map.planet')[$gid];
//            $four_axis_name_array = array('上升点', '天顶', '下降点', '天底');
//            for ($i = 0; $i < 4; $i++) {//原理 部分需要替换下内容，内容和意义不需要
//                $data['sub_lines'][$i + 1]['theory'] = str_replace(['[line_number]', '[line_name]', '[planet_name]', '[four_axis_name]', '[planet_name2]'], [$i + 1, $line_name, $planet_name, $four_axis_name_array[$i], $planet_name], $lines_theory);
//            }
        }

        $rec = Util::CheckAppVersion('2.9.6');
        if ($rec === '小')
        {
            $template = 'info';
        } else
        {
            $template = 'info2';
        }
        return $this->fetch($template, [
            'data' => $data,
            'lines_icon' => config('map.lines_detail_icon'),
            'gid' => $gid,
            'header' => json_encode($this->request->header(), true)
        ]);
    }

// Mod函数实现 地图经度为-180～180度 西经180度到东经180度
    private function Mod($d)
    {
        $d -= floor($d / 360) * 360;

        if ($d >= 180) $d -= 360;

        else if ($d < -180) $d += 360;

        return $d;
    }

    public function testAes()
    {
//        $data = [
//            'did' => 'asd54a6s4d64as6d4',
//            'version' => '2.0.0',
//            //            'time' => Time::get13TimeStamp(),
//            'time' => 1528205004360,
//        ];
//        var_dump('rid=8&lon=116.397732&lat=39.908676&address=北京传媒大学&name=用户名字');
        //        var_dump('did=CB2B99EB-C312-4A1F-9EB1-0EC344054AC4&time=1528377377551&version=1.1.1');
        ////        did=CB2B99EB-C312-4A1F-9EB1-0EC344054AC4&time=1528377377551&version=1.1.1
        //        $data = [
        //            'did'=>'CB2B99EB-C312-4A1F-9EB1-0EC344054AC4',
        //            'version'=>'1.1.1',
        //            'time'=>1528377377551,
        //        ];
        $data = [
            'rid' => '8',
            'lon' => '116.397732',
            'lat' => '39.908676',
            'address' => '北京传媒大学',
            'name' => '用户名字',
        ];


        echo IAuth::setSign($data);
        echo '<br><br><br><br>';
        $token = 'rid=8&lon=116.397732&lat=39.908676&address=北京传媒大学&name=用户名字';
        //    echo IAuth::setSign($token);

        $str = 'token=1OZi8lc3LIOPZTuv3mQQGBkXIeigLPuj0un67vKYKri8GmQPNueSs+XrmuZWi06dO51DEenA7uul5JuPGUP38OjLs8BZdC9JJHFIP56g/hWg63jTWKw6eWpEnzNdCXUs';
        //    maOh4uNTXkS/qCp49N5BryVDXJP/aAHG3oE6t5pNU9914lCs5XZP2WkD/M8kKdV/UZfLjUMtZVuj/HcVisHNKdiv7 chU4Khgge7jzHiWiFvJYZYPAtuo0cR4yo7/ lA
        echo '<br><br><br><br>';
        $result = (new Aes())->decryptWithOpenssl($str);
        echo $result;
    }

    public function acg_map()
    {
        $v = input('v', 1);

        $rec = Util::CheckAppVersion('2.9.6');
        if ($rec === '小')
        {
            $hasVideo = false;
        } else
        {
            $hasVideo = true;
        }
        return $this->fetch('acg_map', ['v' => $v, 'has_video' => $hasVideo]);
    }

}
